home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / TCP_IP / TNOS230S / MERGE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-30  |  1.2 KB  |  79 lines

  1. #ifdef DEMO
  2. #include <stdio.h>
  3. #else
  4. #include "global.h"
  5. #include "commands.h"
  6. #include "proc.h"
  7. #endif
  8.  
  9. #if !defined(_lint)
  10. static char rcsid[] OPTIONAL = "$Id: merge.c,v 1.11 1997/07/31 00:44:20 root Exp root $";
  11. #endif
  12.  
  13. FILE *
  14. fopennew (fname, mode)
  15. const char *fname, *mode;
  16. {
  17. char newname[256];
  18.  
  19.     sprintf (newname, "%s.new", fname);
  20.     return (fopen (newname, mode));
  21. }
  22.  
  23.  
  24. FILE *
  25. fopentmp (fname, mode)
  26. const char *fname, *mode;
  27. {
  28. char newname[256];
  29.  
  30.     sprintf (newname, "%s.tmp", fname);
  31.     return (fopen (newname, mode));
  32. }
  33.  
  34.  
  35. int
  36. merge (fname)
  37. const char *fname;
  38. {
  39. FILE *fp, *fpnew;
  40. char buf[128], name[128];
  41.  
  42.     sprintf (name, "%s.new", fname);
  43.     if ((fpnew = fopen(name, "rt")) == (FILE *)NULL)
  44.         return 0;
  45.     if ((fp = fopen(fname, "r+t")) == (FILE *)NULL)        {
  46.         (void) fclose (fpnew);
  47.         (void) rename(name, fname);
  48.         return 1;
  49.     }
  50.     kwait (NULL);
  51.     fseek (fp, 0, 2);
  52.     while (fgets (buf, 128, fpnew))        {
  53.         kwait (NULL);
  54.         fputs (buf, fp);
  55.     }
  56.     (void) fclose (fp);
  57.     (void) fclose (fpnew);
  58.     (void) remove (name);
  59.     return 1;
  60. }
  61.  
  62.  
  63. #ifdef DEMO
  64.  
  65. int
  66. kwait (i)
  67. int i;
  68. {
  69. }
  70.  
  71.  
  72. void
  73. main ()
  74. {
  75.     merge ("/nos/src/test1");
  76. }
  77.  
  78. #endif
  79.